<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //apply()方法调用一个具有给定this值的函数，以及以一个数组(或类数组对象)的形式提供参数
      //注意：call方法的作用和apply方法类型，区别就是call方法接收的是参数列表，而apply方法接收的是一个数组
      const numbers = [5, 6, 2, 3, 7]
      const max = Math.max.apply(null, numbers)
      console.log(max)
      const min = Math.min.apply(null, numbers)
      console.log(min)

      let array = ['a', 'b']
      let elements = [0, 1, 2]
      array.push.apply(array, elements)
      console.log(array)
      //使用apply来链接构造器
      Function.prototype.construct = function (args) {
        let oNew = Object.create(this.prototype)
        this.apply(oNew, args)
        return oNew
      }
    </script>
  </body>
</html>
